A memory management system typically allocates memory from a memory pool in response to requests for memory of variable sizes. In this process, the memory management system identifies chunks of memory in the memory pool that are large enough to satisfy the requests and returns the memory addresses of those chunks. The memory management system typically also handles the return of the allocated memory chunks to the memory pool. Memory management systems typically are implemented in software. Although it is well known that hardware based memory management systems have improved performance and power characteristics relative to their software counterparts, there have only been a handful of proposals for accelerators related to memory management over the past several decades. These proposals have not been widely adopted. The few cases of prior art hardware memory managers appear to be confined to special high-end applications, which typically are less sensitive to memory management overhead than other applications, such as embedded applications.